/*
mongoose 默认参数、mongoose模块化、mongoose 性能疑问
    1. mongoose 默认参数：增加数据的时候，如果不传入数据会使用默认配置的数据；
*/
const mongoose = require("mongoose");

// 连接数据库
mongoose.connect("mongodb://127.0.0.1:27017/itying", {
    useNewUrlParser: true, // 使用新的URL解析器
    useUnifiedTopology: true, // 使用新的拓扑结构
    // useCreateIndex: true, // 使用新的索引创建方式
    // useFindAndModify: false // 使用新的查找和修改方法
}, (err) => {
    if (err) {
        console.log("数据库连接失败", err);
    }
    console.log("数据库连接成功");
});

// 定义数据表（集合）映射，字段名称必须和数据库中的字段名称一致
const UserSchema = mongoose.Schema({
    username: {
        type: String,
        required: true, // 必须传入
        default: "默认用户名" // 默认值
    },
    password: {
        type: String,
        required: true,
        default: "123456"
    },
    age: {
        type: Number,
        default: 18
    }
});

// 创建模型
const UserModel = mongoose.model("User", UserSchema, "user");

// 查找数据
UserModel.find({}, (err, data) => {
    if (err) {
        console.log("查询失败", err);
    } else {
        console.log("查询结果", data);
    }
});

// 添加数据
const user= new UserModel({
    username: "张三",
    password: "123456",
    age: 20
});
user.save((err, data) => {
    if (err) {
        console.log("添加失败", err);
    } else {
        console.log("添加成功", data);
    }
});